package com.coffeeloversupportlibrary.coffeelover.domain.explor;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import com.coffeeloversupportlibrary.R;
import com.coffeeloversupportlibrary.coffeelover.domain.explor.entity.Dialog;
import com.coffeeloversupportlibrary.coffeelover.uicompont.PictureTypeEntity;
import com.coffeeloversupportlibrary.core.base.BaseActivity;
import com.coffeeloversupportlibrary.databinding.CoffeeshopActivityMainBinding;
import com.mylhyl.circledialog.CircleDialog;

import java.util.ArrayList;
import java.util.List;

/**
 * @author puyv
 * @createTime 2021/11/29 0:27
 * @projectName CoffeeLoverSupportLibrary
 * @className ExplorActivity.java
 * @description TODO
 * // TODO: 2021/11/29  20: 51  多分支请求 单分支请求到这暂时告一段，应为要处理演讲稿 后期有时间在完善
 */
public class ExploreActivity extends BaseActivity<ExploreViewModel, CoffeeshopActivityMainBinding> implements View.OnClickListener {
    private static final int RECOMMEND=1;
    private static final int DIALOG=2;
    private static final int INTRODUCE=3;
    private int isStartDialog=0;

    @Override
    public void registerUIChangeCallBack() {

        getViewModel().getFailureToast().observe(this,
                new Observer<String>() {
                    @Override
                    public void onChanged(String s) {
                        getBinding().dialog.setText("emmmmmm,网络奔溃了<..>"+s);
                    }
                });

        getViewModel().getNotifyDialogUpdate().observe(this,
                new Observer<Dialog>() {
                    @Override
                    public void onChanged(Dialog dialog) {
                        Log.e("PUYV","UI 感知到数据变化 发生回调");
                        getBinding().rootParent
                                .setBackground(getDrawable(R.drawable.talkaticle));
                        getBinding().dialog.setText(dialog.getContent());
                        
                    }
                });

        getViewModel().getDialogInfo().observe(this,
                new Observer<List<Dialog>>() {
                    @Override
                    public void onChanged(List<Dialog> dialogs) {
                        //执行交叉逻辑  单条数据 修改对话框内容  多条数据 弹出对话框选择
                        if(dialogs.size()==1){
                            getBinding().dialog.setText(dialogs.get(0).getContent());
                        }else{
                            // TODO: 2021/11/29处理多选逻辑
                             showMutableDialog(dialogs);
                        }
                    }
                });
    }

    @Override
    public int getLayoutId() {
        return R.layout.coffeeshop_activity_main;
    }

    @Override
    public void initData(@Nullable Bundle savedInstanceState) {
        getBinding().recommend.setOnClickListener(this);
        getBinding().dialogPeople.setOnClickListener(this);
        getBinding().introduceBean.setOnClickListener(this);
        getBinding().dialog.setOnClickListener(this);

    }



    //  推荐 文章 咖啡
    @Override
    public void onClick(View v) {
        // TODO: 2021/11/29  无论是第一次进入对话 还是对话中进入另一个对话 重置对话开始
        if(v==getBinding().recommend){
            getViewModel().startDialog(RECOMMEND);
            isStartDialog=1;
            Log.e("PUYV","recomda onclick-----------");
        }else if(v==getBinding().dialogPeople){
            isStartDialog=1;
            getViewModel().startDialog(DIALOG);
        }else if(v==getBinding().introduceBean){
            getViewModel().startDialog(INTRODUCE);
            isStartDialog=1;
            
        }else if(v==getBinding().dialog){
            // TODO: 2021/11/29    bug 排查 两条请求线索交叉的处理   标志位 Flag
            if(null!=getViewModel().getNotifyDialogUpdate().getValue()){
                // TODO: 2021/11/29   问题所在！--初次 用户选择模块返回下次对话id 但之后状态变为对话状态 分析？？
                // TODO: 2021/11/29   解决方案：设置标志位 重新选择对话模块时重置标志位
               if(isStartDialog==1){
                   getViewModel().dialog(getViewModel().getNotifyDialogUpdate().getValue().getIntentAction());
                   isStartDialog++;
               }else{
                   //  选择不同的对话选项  数组内的元素 代表不同的选项
                   // 多分支应该对话框处理
                   // TODO: 2021/11/29  处理单选逻辑
                   if(getViewModel().getDialogInfo().getValue().size()==1){
                       getViewModel().dialog(getViewModel().getDialogInfo().getValue().get(0).getIntentAction());
                   }

               }


            }
        }
        
        
    }

    private void showMutableDialog(List<Dialog> list){
        // TODO: 2021/11/29   多分支逻辑
        List<PictureTypeEntity> items = new ArrayList<>();
        for(Dialog dialog:list){
            items.add(new PictureTypeEntity(dialog.getIntentAction(), dialog.getContent()));
        }
        new CircleDialog.Builder()
                .configDialog(params -> {
                    params.backgroundColorPress = Color.CYAN;
//                    params.animStyle = R.style.dialogWindowAnim;
                })
                .setTitle("标题")
                .configTitle(params -> {
                })
                .configSubTitle(params -> {
                })
                .setItems(items, (parent, view1, position1, id) -> {
                    // TODO: 2021/11/29  执行请求逻辑  处理多选逻辑 监听到具体选择的项目
                    getViewModel().dialog(getViewModel().getDialogInfo().getValue().get(position1).getIntentAction());
                            return true;
                        }
                )
                .show(getSupportFragmentManager());
    }

}
